package com.tensquare.frined.service;

import com.tensquare.frined.client.UserClient;
import com.tensquare.frined.dao.FriendDao;
import com.tensquare.frined.dao.NoFriendDao;
import com.tensquare.frined.pojo.Friend;
import com.tensquare.frined.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
@Transactional
public class FriendService {
    @Autowired
    private FriendDao friendDao;
    @Autowired
    private NoFriendDao noFriendDao;
    @Autowired
    private UserClient userClient;


    public void addFriend(String userid, String friendid) {
        //判断当前的userid到friendid是否已经是好友
        Friend friend = friendDao.findByUseridAndFriendid(userid , friendid);
        if(friend != null){
            throw new RuntimeException("不能重复添加好友");
        }
        //不是好友,就保存
        friend = new Friend();
        friend.setUserid(userid);
        friend.setFriendid(friendid);
        friend.setIdlike("0");
        //添加好友
        friendDao.save(friend);
        //判断是否是双向喜欢 , 如果是,就把双方的状态都改为1
        if(friendDao.findByUseridAndFriendid(friendid , userid) != null){
            friendDao.updateIslike("1" , userid ,friendid);
            friendDao.updateIslike("1" , friendid ,userid);
        }
        //更新关注数和粉丝数
        userClient.updatefanscountandfollowcount(userid , friendid , 1);
    }

    public void addNoFriend(String userid, String friendid) {
        NoFriend noFriend = new NoFriend();
        noFriend.setFriendid(friendid);
        noFriend.setUserid(userid);
        noFriendDao.save(noFriend);
    }

    public void deleteFriend(String userid, String friendid) {
        //删除好友表中的数据
        friendDao.deleteByUseridAndFriendid(userid , friendid);
        //把对方喜欢自己这条记录的状态改为单向喜欢,如果没有对方喜欢自己的记录,相当于当前sql不执行
        friendDao.updateIslike("0" , friendid , userid);
        //在非好友表中添加一条记录
        NoFriend noFriend = new NoFriend();
        noFriend.setFriendid(friendid);
        noFriend.setUserid(userid);
        noFriendDao.save(noFriend);
        //更新关注数和粉丝数
        userClient.updatefanscountandfollowcount(userid , friendid , -1);
    }
}
